home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / sound / ainstr_fm.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  3KB  |  131 lines

  1. /*
  2.  *  Advanced Linux Sound Architecture
  3.  *
  4.  *  FM (OPL2/3) Instrument Format
  5.  *  Copyright (c) 2000 Uros Bizjak <uros@kss-loka.si>
  6.  *
  7.  *
  8.  *   This program is free software; you can redistribute it and/or modify
  9.  *   it under the terms of the GNU General Public License as published by
  10.  *   the Free Software Foundation; either version 2 of the License, or
  11.  *   (at your option) any later version.
  12.  *
  13.  *   This program is distributed in the hope that it will be useful,
  14.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  *   GNU General Public License for more details.
  17.  *
  18.  *   You should have received a copy of the GNU General Public License
  19.  *   along with this program; if not, write to the Free Software
  20.  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  21.  *
  22.  */
  23.  
  24. #ifndef __SOUND_AINSTR_FM_H
  25. #define __SOUND_AINSTR_FM_H
  26.  
  27. #ifndef __KERNEL__
  28. #include <asm/types.h>
  29. #include <asm/byteorder.h>
  30. #endif
  31.  
  32. /*
  33.  *  share types (share ID 1)
  34.  */
  35.  
  36. #define FM_SHARE_FILE        0
  37.  
  38. /*
  39.  * FM operator
  40.  */
  41.  
  42. typedef struct fm_operator {
  43.     unsigned char am_vib;
  44.     unsigned char ksl_level;
  45.     unsigned char attack_decay;
  46.     unsigned char sustain_release;
  47.     unsigned char wave_select;
  48. } fm_operator_t;
  49.  
  50. /*
  51.  *  Instrument
  52.  */
  53.  
  54. #define FM_PATCH_OPL2    0x01        /* OPL2 2 operators FM instrument */
  55. #define FM_PATCH_OPL3    0x02        /* OPL3 4 operators FM instrument */
  56.  
  57. typedef struct {
  58.     unsigned int share_id[4];    /* share id - zero = no sharing */
  59.     unsigned char type;        /* instrument type */
  60.  
  61.     fm_operator_t op[4];
  62.     unsigned char feedback_connection[2];
  63.  
  64.     unsigned char echo_delay;
  65.     unsigned char echo_atten;
  66.     unsigned char chorus_spread;
  67.     unsigned char trnsps;
  68.     unsigned char fix_dur;
  69.     unsigned char modes;
  70.     unsigned char fix_key;
  71. } fm_instrument_t;
  72.  
  73. /*
  74.  *
  75.  *    Kernel <-> user space
  76.  *    Hardware (CPU) independent section
  77.  *
  78.  *    * = zero or more
  79.  *    + = one or more
  80.  *
  81.  *    fm_xinstrument    FM_STRU_INSTR
  82.  *
  83.  */
  84.  
  85. #define FM_STRU_INSTR    __cpu_to_be32(('I'<<24)|('N'<<16)|('S'<<8)|'T')
  86.  
  87. /*
  88.  * FM operator
  89.  */
  90.  
  91. typedef struct fm_xoperator {
  92.     __u8 am_vib;
  93.     __u8 ksl_level;
  94.     __u8 attack_decay;
  95.     __u8 sustain_release;
  96.     __u8 wave_select;
  97. } fm_xoperator_t;
  98.  
  99. /*
  100.  *  Instrument
  101.  */
  102.  
  103. typedef struct fm_xinstrument {
  104.     __u32 stype;            /* structure type */
  105.  
  106.     __u32 share_id[4];        /* share id - zero = no sharing */
  107.     __u8 type;            /* instrument type */
  108.  
  109.     fm_xoperator_t op[4];        /* fm operators */
  110.     __u8 feedback_connection[2];
  111.  
  112.     __u8 echo_delay;
  113.     __u8 echo_atten;
  114.     __u8 chorus_spread;
  115.     __u8 trnsps;
  116.     __u8 fix_dur;
  117.     __u8 modes;
  118.     __u8 fix_key;
  119. } fm_xinstrument_t;
  120.  
  121. #ifdef __KERNEL__
  122.  
  123. #include "seq_instr.h"
  124.  
  125. int snd_seq_fm_init(snd_seq_kinstr_ops_t * ops,
  126.             snd_seq_kinstr_ops_t * next);
  127.  
  128. #endif
  129.  
  130. #endif    /* __SOUND_AINSTR_FM_H */
  131.